Tillage · Crop Residue · Soil Exposure

NDTI – Normalized Difference Tillage Index

NDTI is a spectral index used to distinguish tilled / bare soil and crop residue from vegetated surfaces by exploiting the contrast between short-wave infrared (SWIR) and near-infrared (NIR) reflectance.
مؤشر NDTI لتمييز التربة المحروثة وبقايا المحصول (Crop Residue) عن الغطاء النباتي من خلال الفرق بين انعكاس الحزمة تحت الحمراء القريبة والحزمة تحت الحمراء قصيرة الموجة.

1. Scientific Definition

The Normalized Difference Tillage Index (NDTI) enhances bare or tilled soil and crop residue relative to green vegetation. Tilled soil and residue generally show higher reflectance in SWIR than in NIR, whereas healthy vegetation shows strong NIR reflectance and relatively lower SWIR reflectance.

Formula

A commonly used NDTI definition is:

NDTI = (SWIR − NIR) / (SWIR + NIR) Range: −1 → +1

  • NIR – Near InfraRed reflectance
  • SWIR – Short-Wave InfraRed reflectance (SWIR1)

Typical Interpretation

NDTIInterpretation
< 0 Dense vegetation / water – low tillage signal
0 – 0.2 Partially vegetated soil / moist soil
0.2 – 0.4 Moderately tilled soil / crop residue cover
> 0.4 Highly exposed bare soil / strong tillage signal

Thresholds depend on soil type, moisture, and crop residue conditions, and should be calibrated using field data or high-resolution imagery.

Main Applications

  • Monitoring tillage practices and soil management
  • Estimating crop residue cover after harvest
  • Assessing soil exposure and erosion risk
  • Supporting agricultural land degradation studies

2. Data & Bands

Sentinel-2 (Recommended)

  • NIR: B8 (~842 nm)
  • SWIR1: B11 (~1610 nm)

Landsat 8 / 9

  • NIR: B5
  • SWIR1: B6

Landsat 5 TM / 7 ETM+

  • NIR: B4
  • SWIR1: B5

Best Practices

  • Use surface reflectance (SR) products with atmospheric correction.
  • Mask clouds & cloud shadows using QA bands.
  • Prefer images acquired shortly after harvest to capture crop residue patterns.
  • Combine NDTI with NDVI / BSI to separate bare soil, residue, and vegetation.

Suggested Palette

[ "#0b1120", "#1f2937", "#6b7280", "#fbbf24", "#f97316", "#fed7aa" ]

3. Google Earth Engine Code – NDTI (SWIR − NIR)

// NDTI using Sentinel-2 SR
// NDTI = (SWIR - NIR) / (SWIR + NIR)
// Here: SWIR = B11, NIR = B8

var roi = geometry;   // Draw AOI as 'geometry'
Map.centerObject(roi, 11);

// 1. Load Sentinel-2 surface reflectance
var s2 = ee.ImageCollection("COPERNICUS/S2_SR")
  .filterBounds(roi)
  .filterDate("2023-01-01", "2023-12-31")
  .filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE", 20))
  .select(["B8","B11"]); // NIR, SWIR1

// 2. Median composite
var img = s2.median().clip(roi);

// 3. Compute NDTI
var ndti = img.expression(
  "(S - N) / (S + N)",
  {
    "S": img.select("B11"), // SWIR
    "N": img.select("B8")   // NIR
  }
).rename("NDTI");

// 4. Visualization
var vis = {
  min: -1,
  max:  1,
  palette: ["#0b1120","#1f2937","#6b7280","#fbbf24","#f97316","#fed7aa"]
};

Map.addLayer(ndti, vis, "NDTI (SWIR - NIR)");

// Optional: simple tillage / bare soil mask (e.g. NDTI > 0.2)
var tilled = ndti.gt(0.2).selfMask();
Map.addLayer(
  tilled,
  {palette:["#fbbf24"]},
  "Tilled / Bare Soil (NDTI > 0.2)",
  false
);

// 5. Export NDTI as GeoTIFF
Export.image.toDrive({
  image: ndti,
  description: "NDTI_Sentinel2",
  fileNamePrefix: "NDTI_SWIR_NIR",
  region: roi,
  scale: 20,        // match SWIR resolution
  crs: "EPSG:4326",
  maxPixels: 1e13
});